iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Software Development

Event driven architecture的奧妙系列 第 27

Day 27 Nats的補充包JetStream - 前篇

  • 分享至 

  • xImage
  •  

前言

我們昨天講了CoreNATS的Subject Based Message,透過wildcard的機制讓subject能讓subscriber同時匹配多個subject。

但CoreNATS有一些缺陷在,今天我們講NATS的補充包JetStream,用來補足CoreNATS的不足。

好了~讓我們開始吧!

什麼是NATS JetStream

NATS JetStream是NATS用來補足CoreNATS不足的強化版本,提供持久化的訊息訊息流的控制。作為一個開源的高性能訊息系統,JetStream進一步擴大CoreNATS的功能,讓開發團隊在分佈式系統中建立更複雜、可靠的訊息處理系統。

JetStream克服的問題

  • 訊息持久化: JetStream允許讓訊息儲存在Stream裡,這表示即使subscriber沒有及時收到的情況下,訊息也不會遺失

  • 確認訊息和排序:JetStream 支持消息確認機制,確保消息只有在成功處理後才會被刪除。此外,它還能保證消息的順序,這對於許多應用(如金融交易)來說是必不可少的

  • Stream的管理: 可以定義多個stream,每個stream可以設定不同的配置,這讓訊息的管理靈活性更高,能夠根據subscriber的需求調整

JetStream的特性

https://ithelp.ithome.com.tw/upload/images/20241011/20169096QMX8oWhfYD.jpg

相較於CoreNATS的訊息接收方式是由subject分送給subscriber,subscriber是被動接收訊息的,而JetStream除了這個方式外,多了可以主動要訊息的模式。

JetStream明確定義跟CoreNATS不同的兩個新觀念:

  • Stream - 管理訊息的儲存
  • Consumer - 管理如何消費

Stream

https://ithelp.ithome.com.tw/upload/images/20241011/20169096UpzlWjJvFe.jpg

Stream定義了NATS訊息保留的規則:

  1. 儲存方式
  2. 保留的策略
  3. 捨棄的策略

如果有一條NATS的訊息符合Stream設定的Subject,就會被JetStream存下來。透過管理Stream的方式,JetStream可以間接的做到訊息持久化。

總結

NATS JetStream是個強大的訊息系統,通過訊息持久化、訊息確認、Stream和Consumer的管理,幫助開發團隊建構出穩定、高效的分佈式系統。隨著微服務和EDA越受大家的重視,JetStream是不可或缺的一部分。
明天我們接著細解JestStream另一個重要的功能 - Consumer。

好了~ 今天就到這邊!!

Reference


上一篇
Day 26 - Event Broker的法寶: Nats - CoreNATS (續)
下一篇
Day 28 Nats的補充包JetStream - 後篇
系列文
Event driven architecture的奧妙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言